Postoje razliciti algoritmi za sortiranje. Oni najjednostavniji se najsporije izvrsavaju, i vreme njihovog izvrsavanja je srazmerno sa N^2. Slozeniji algoritmi imaju vreme izvrsenja koje tezi srazmeri N*ln(N). N je duzina niza. Posto problem vezujes za mikrokontrolere, onda predpostavljam da niz nije previse dug, i da mozes da upotrebis neki jednostavniji algoritam. Evo ti uputstva za jedan stvarno jednostavan algoriam.
Ako imas Niz[N] onda indeks niza ide od 0 do N-1.
Uvedi pomocnu varijablu koja oznacava kraj sortirnja, neka se zove EndSort.
Uvedi indeksnu varijablu X kojom ces da pristupas elementima niza.
Code:
1. Postavi EndSort := 1;
2. Postavi X := 0;
3. Procitaj Niz[X] i Niz[X+1];
4. Ako sortiras po opadajucim vrednostima onda:
Ako je Niz[X] < Niz[X+1] onda zameni vrednosti Niz[X] i Niz[X+1] i postavi EndSort := 0;
Ako sortiras po rastucim vrednostima onda:
Ako je Niz[X] > Niz[X+1] onda zameni vrednosti Niz[X] i Niz[X+1] i postavi EndSort := 0;
5. Uvecaj X za 1;
6. Ako je X < N-1 idi na korak 3 inace idi na korak 7;
7. Ako je EndSort = 0 idi na korak 1 inace idi na korak 8;
8. Sortiranje je zavrseno.
Ako radis sa duzim nizom i mislis da ti treba neki brzi algoritam, dacu ti uputstvo i za njegovu primenu.
Pozdrav